package main

import (
	"fmt"
	"log"
	"time"

	"jianianhua-server/config"
	"jianianhua-server/database"
	"jianianhua-server/models"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

func main() {
	// 加载配置
	cfg := config.LoadConfig()
	
	// 连接数据库
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		cfg.DBUsername, cfg.DBPassword, cfg.DBHost, cfg.DBPort, cfg.DBName)

	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Silent),
	})
	if err != nil {
		log.Fatalf("连接数据库失败: %v", err)
	}

	// 设置全局数据库连接
	database.DB = db

	// 生成未来7天的预约配置
	now := time.Now()
	generatedCount := 0

	for i := 0; i < 7; i++ {
		date := now.AddDate(0, 0, i)
		dateStr := date.Format("2006-01-02")

		// 检查是否已存在
		var existingConfig models.AppointmentConfig
		result := db.Where("date = ?", dateStr).First(&existingConfig)
		
		if result.Error == gorm.ErrRecordNotFound {
			// 不存在，创建新的配置
			config := models.AppointmentConfig{
				Date:            dateStr,
				StartTime:       "09:30", // 默认开始时间
				EndTime:         "22:00", // 默认结束时间
				IntervalMinutes: 90,      // 排队间隔90分钟
				MaxAppointments: 0,       // 默认最大预约数（无限制）
				Status:          1,       // 默认启用
				IsLeave:         false,   // 默认不请假
				LeaveReason:     "",      // 默认无请假原因
			}

			if err := db.Create(&config).Error; err != nil {
				log.Printf("创建预约配置失败 %s: %v", dateStr, err)
			} else {
				fmt.Printf("✅ 已生成预约配置: %s\n", dateStr)
				generatedCount++
			}
		} else if result.Error != nil {
			log.Printf("查询预约配置失败 %s: %v", dateStr, result.Error)
		} else {
			fmt.Printf("⏭️  预约配置已存在: %s\n", dateStr)
		}
	}

	fmt.Printf("\n🎉 自动生成完成！共生成 %d 个新的预约配置\n", generatedCount)
	fmt.Printf("📅 时间范围: %s 至 %s\n", 
		now.Format("2006-01-02"), 
		now.AddDate(0, 0, 6).Format("2006-01-02"))
}
